home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / Other Langs / Prolog / Open Prolog Extras < prev    next >
Text File  |  1991-02-01  |  5KB  |  129 lines

  1. Some of the useful extra built-in or external predicates
  2. in Open Prolog 1.0d17 are listed below:
  3.  
  4. 'system$alert'(alertMessage). %must be an atom or a number
  5. 'system$predicate'(Name,Term,Kind).
  6. 'system$username'(ChooserName).
  7. 'system$seconds'(Seconds). %Since 1/1/1904 - negative but don't worry.
  8. 'system$date'(Seconds,Date). %Seconds is always input
  9. 'system$time'(Seconds,Time). %Seconds is always input
  10. 'system$random'(Range,RandomNumber). %range is always input
  11. %range is 1 to Range, or -1 to Range. Don't ask for Range of -1, 0 or +1.
  12.  
  13. say(Phrase,Volume) needs MacinTalk to work. 
  14. Due to a bug in Macintalk, all other sounds are disabled!
  15. The Phrase must be an atom or a number. 
  16. Pass a Volume of 0 - 7.  A volume of 0 means the current setting
  17. will be used.
  18.  
  19. eg. 
  20. 'system$username'(X),say('Hi',7),say(X,7).
  21.  
  22. macsbug & macsbugFail need Macsbug to work, and will crash otherwise.
  23.  
  24. play(SoundName,Volume) will play any Type 1 'snd ' resource.
  25. Sounds recorded with the new ‘Sound’ Control Panel Device and 
  26. all the sounds for the System Bell are snds of this type.
  27. To play them, give their names exactly as they appear in
  28. the ‘Sound’ Control Panel Device.
  29. Be careful to get spacing and punctuation exactly right.
  30. If the sound can't be found, or is too big to fit into memory,
  31. the call will fail,
  32. Pass a Volume of 0 - 7.  A volume of 0 means the current setting
  33. will be used.
  34.  
  35. E.g.
  36. play('Clink-Klank',5).
  37.  
  38. The snd resources can be resident in any open window, the Worksheet,
  39. Open Prolog itself, or the System.
  40.  
  41. 'open$prolog$eof$char'(CurrentEofChar,NewEofChar). %default is 26
  42. 'open$prolog$eoln$char'(CurrentEolnChar,NewEolnChar). %default 31
  43.  
  44. 'system$show$about' %Shows the About Open Prolog… box
  45.  
  46. 'toolbox$GetIndString'(Atom,ResourceNumber,Index). %same as the Mac
  47. Toolbox GetIndString, where the string is turned into an atom.
  48.  
  49. Window-handling Predicates.
  50.  
  51. A number of predicates have been written to handle window-based I/O.
  52. Please be aware that they are subject to change.
  53.  
  54. Basic Ideas:
  55. ◊    Window Numbers
  56. It is not possible to refer to a window by its name. This is because its
  57. name may change, and because (in theory anyway) many windows can
  58. have the same names.
  59. Instead, every window is assigned a window number when it
  60. is created (distinct from its parameter pointer or file number etc.). 
  61.  
  62. ◊    Starting Pointer & Single-Line-Selection
  63. Each window may have text associated with it. Whenever text is output
  64. to the window (say using the write command), a pointer, called the
  65. starting pointer, is made point to the next character after the last
  66. character output.
  67.  
  68. When a user selects text using the Enter key, the text selected goes
  69. into a text buffer that is passed to the Prolog interpreter.
  70. In the case of single-line-selection, the 
  71. start of the selection is computed by going from the caret backwards
  72. along the line to the start of the line or to the starting pointer,
  73. whichever comes first. The end of the selection is the end of the line. 
  74.  
  75. ◊ Highlighting & Outlines
  76. It is possible to highlight a particular run of text. Just to confuse you,
  77. the highlight is called an outline, because that's how it started out.
  78. The highlight will 'stick' to the text specified even when text before,
  79. within or after it has been added or removed. Therefore it's not safe to
  80. refer to a highlight by its start & end points, which may vary. Instead, a
  81. highlight is given a unique index number by which it may be referred to
  82. later.
  83.  
  84. ◊    Some Built-Ins
  85.  
  86. 'system$window$open$file$window'(Name,WindowNumber,ResultCode)
  87. A window is opened with the name given (or brough to the front if it's
  88. open already). If a file of the same name exists, then it's opened into the
  89. window if possible. A result code of 0 indicates everything was OK;
  90. anything else means some error occured. It's not an error to not find a
  91. corresponding file.
  92.  
  93. 'system$window$set$starting$point'(WindowNumber,StartingPoint) &
  94. 'system$window$get$starting$point'(WindowNumber,StartingPoint)
  95. These can be used to get and set the starting point. Normally you needn't
  96. bother with these, as the starting point is automatically updated.
  97. Sometimes, however, you 'll need them. For example, say you've written
  98. a parser, and you want to indicate errors to the user in the window.
  99. When you display the error message as appropriate, you'll want to
  100. reset the window environment more or less exactly as is was just before
  101. the error occured. For this, you'll need to get the starting point beforehand,
  102. and then reset is after outputting the error message, etc.
  103. I have a rather complex example, so mail me if you'd like it.
  104.  
  105. 'system$window$front'(WindowNumber)
  106. Tells you which window is at the front.
  107.  
  108. 'system$window$get$output'(WindowNumber).
  109. Tells you which is the current output window.
  110.  
  111. 'system$window$set$output'(WindowNumber,Status).
  112. The designated window becomes the output window. Any error (e.g. if
  113. the window is read-only, etc. will be reported in Status. A Status of 0
  114. means OK.
  115.  
  116. 'system$window$select'(WindowNumber).
  117. Bring the window to the front.
  118.  
  119. 'system$window$get$selection'(WindowNumber,Start,End)
  120. Tells you the selection start and end.
  121.  
  122. 'system$window$set$selection'(WindowNumber,Start,End)
  123. Allows you to set the selection start and end.
  124.  
  125. 'system$window$set$outline'(WindowNumber,StyleNumber,
  126.             Start,End,OutlineReference).
  127. Only a style 1 is defined.
  128.  
  129. 'system$window$clear$outline'(WindowNumber,OutlineReference)